home *** CD-ROM | disk | FTP | other *** search
/ BCI NET / BCI NET Dec 94.iso / archives / telecomm / bbs / ctdlaux_src.lha / reciever.c < prev    next >
C/C++ Source or Header  |  1994-01-12  |  3KB  |  98 lines

  1. /*
  2. ** Debug Server: Citadel Aux:
  3. **
  4. */
  5. #include "stdio.h"
  6. #include "string.h"
  7. #include "stdlib.h"
  8. #include <proto/all.h>
  9. #include <pragmas/dos_pragmas.h>
  10. #include <pragmas/exec_pragmas.h>
  11. #include "aux-debug.h"
  12.  
  13. int debugmode = FALSE;   /* extra output with TRUE*/
  14. FILE *op      = NULL;    /* file save output option */
  15. void main(void);
  16.  
  17. void main()
  18.   {
  19.   struct MsgPort *port;
  20.   long port_signal, break_signals, signals;
  21.   char *ptr;
  22. /* open the port */
  23.   printf("... Creating Port:%s\n",AUXDEBUGPORT);
  24.   port = CreatePort(AUXDEBUGPORT,0);
  25.   if( port == NULL )
  26.     {
  27.     printf("Cannot create port of name:%s\n",AUXDEBUGPORT);
  28.     };
  29.   port_signal    = 1 <<  port->mp_SigBit;  /* server port */
  30.   break_signals  = SIGBREAKF_CTRL_F;       /* toggle file save option */
  31.   break_signals |= SIGBREAKF_CTRL_C;
  32.   break_signals |= SIGBREAKF_CTRL_D;       /* turn on DEBUG INFO */
  33.   break_signals |= SIGBREAKF_CTRL_E;       /* Exit               */
  34.  
  35. /* process until a control-E to exit */
  36.  
  37.   FOREVER
  38.     {
  39.     signals = Wait(port_signal | break_signals);
  40.     if( signals & port_signal )                   /* debug messages first */
  41.       {
  42.       struct debugmsg *msg;
  43.       while( msg = (struct debugmsg *)GetMsg(port) )
  44.         {
  45.         if( debugmode || msg->flag )
  46.           {
  47.           if( debugmode )
  48.             {
  49.             for(ptr = msg->msg; *ptr ; ptr++)if( *ptr < 20 || *ptr >126)*ptr='.';
  50.             printf("%s %d %d %d\n",msg->msg, msg->a, msg->b, msg->c);
  51.             if( op != NULL )fprintf(op,"%s %d %d %d\n",msg->msg, msg->a, msg->b, msg->c);
  52.             }
  53.           else
  54.             {
  55.             printf("%s",msg->msg);
  56.             if( op != NULL )fprintf(op,"%s",msg->msg);
  57.             };
  58.           };
  59.         FreeMem(msg->msg, strlen(msg->msg));
  60.         FreeMem(msg, sizeof(struct debugmsg));
  61.         };
  62.       };
  63.     if( signals & SIGBREAKF_CTRL_D )
  64.       {
  65.       debugmode = ~debugmode;
  66.       printf("Got Control_D, debug is %s\n",(debugmode) ? "on" : "off");
  67.       if( op != NULL )fprintf(op,"Got Control_D, debug is %s\n",(debugmode) ? "on" : "off");
  68.       };
  69.     if( signals & SIGBREAKF_CTRL_E )
  70.       {
  71.       printf("Got Control_E, exiting\n");
  72.       break;
  73.       };
  74.     if( signals & SIGBREAKF_CTRL_F )
  75.       {
  76.       printf("Got Control_F, File save option is turned ");
  77.       if( op != NULL )fprintf(op,"Got Control_F, File save option is turned off");
  78.       if( op == NULL )
  79.         {
  80.         printf("on...\n");
  81.         op = fopen("save.aux","ab+");
  82.         if( op == NULL )
  83.           {
  84.           printf(" Error:  save.aux could not be opened!\n");
  85.           };
  86.         }
  87.       else  /* already logging, turn it off */
  88.         {
  89.         printf("off...\n");
  90.         fclose(op);
  91.         op = NULL;
  92.         };
  93.       };
  94.     };
  95.   if(  port )DeletePort(port);    /* remove the server port */
  96.   if( op != NULL)fclose(op);
  97.   }
  98.